iT邦幫忙

2022 iThome 鐵人賽

DAY 2
0

今天,我們先輕鬆的聊一聊專案 (Color Code Tag) 誕生的始末,再一同看看 DevOps 的定義,為後續開發鋪上地基。

專案的誕生

2022 年 6 月,我人生第一次踏上澎湖這座美麗的島嶼,在搭往七美島的遊艇上,澎湖的海與天連成一線,我不禁感嘆這 美麗的顏色漸層,就順手拍下了這張海連天的照片,並想把這組顏色永遠收藏。

美美美美美美美
(取自 孤單威廉的 iphone SE)

這時忽然想到,前陣子在做網站規劃時,為了制定網站的主題色調,常常到 Pinterest 等網站上參考設計師們繪製的 Color Settings;經參考與篩選多個顏色後,再逐一微調成自己想要的色碼組合。

ColorSettings
(取自 Pinterest)

這時一個 idea 油然而生,我是否能 搭建一個 Web 服務,前端讓使用者傳送照片,由後端程式即時產生一組符合照片漸層的色碼,同時也能夠練習前後端的開發與部署。

至此,ColorCodeTag 的種子便落下,開始準備生根發芽......。

DevOps 大哉問

什麼是 DevOps ?

這或許是 IT 界的的大哉問,這裡總結目前大家對 DevOps 的主流定義:

  • DevOps 是 Development 和 Operations 的組合
  • DevOps 是一種文化,重視軟體開發人員和運維人員之間溝通合作
  • DevOps 可提升組織快速交付應用程式和服務的能力

綜上所述,我們又可以整理出:

DevOps 是參與人員、流程與技術,在特定需求下的結合;目的是實踐快速且持續不斷的對最終用戶交付價值

在實踐 DevOps 的過程中,自然就包含了專案的規劃、程式碼的撰寫、Gitflow 整併、單元測試與原碼掃描、依照運行環境打包與建構(如 .jar、Docker image)、部署到生產環境與監控狀況與回饋等。

同時,又為了實踐 "持續不斷" 這項目的,在完成了第一階段的產品交付後 (可能是某版本的部署),又會重啟新的開發循環。

這時,團隊對於程式撰寫到上線的流程 (或稱 Pipeline) 已經有了雛形,但馬上會面臨到 "速度與品質" 的需求。

當程式由 PG 新增與修正並推送後,QA 便需要 Checkout source code 測試驗證,完成後再換運維人員 Checkout 後打包並推送到倉庫 (Repository,如 DockerHub, Harbor, 甚至是某個資料夾) 中,再將構建後的程式碼部署到運行環境上。在這個情況下,團隊不僅會花費大量的時間執行相同的事情,同時也會增加彼此之間溝通的成本。

為了解決測試驗證與交付速度的問題,CI/CD 的概念便誕生:

  • CI (Continuous Integration): 持續的開發原始碼,並測試驗證後整併到特定的 git 分支中,目的是讓多人協做開發不會因個人而影響到整體
  • CD (Continuous Delivery): 持續將經驗證的原始碼發布到 Repository 之中,目的是讓團隊能保有隨時將各版本部署到生產環境的能力 (便於發生問題時能夠退回版本止血)
  • CD (Continuous Deployment): 自動將經過驗證與打包的項目部署到生產環境 (或是 SIT/UAT 環境),目的是降低部署時手動操作的風險,且能快速的獲取用戶的回饋

CI/CD by RedHat
(取自 Red Hat 官網)

由此可見,DevOps 並不是一個人的事情,更準確地來說,是多個參與專案的成員、多份專業技術的整合。

DevOps 的實踐

真的一個人也能 DevOps 嗎?

剛才有提到,DevOps 並不是一個人的事情,它是多份專業技術的整合,目的是快速且持續不斷交付價值。而我個人的看法,多數的團隊受限於分工與各項專業知識的隔閡,成員不一定能 (或有時間) 理解與學習不同崗位的知識,反倒是常花費時間進行效率低落的溝通,因此實踐 DevOps 除了要有完整的開發團隊與流程外,還需要有人能夠:

  1. 參與並悉知專案由規劃到佈建的流程
  2. 構建或對接相關的環境 (如 Repository, Linux, Kubernetes)
  3. 實踐 CI/CD (如 Jenkins)
  4. 整合與分享各專業技術 (永無止境的學習)

以上的條件,亦是目前主流 DevOps 工程師需要負責的工作項目;當 DevOps 趨於穩定後,團隊成員便能潛移默化的培養 DevOps 的精神,並正向影響其他的專案。

今日總結

  1. DevOps 是參與人員、流程與技術,在特定需求下的結合;目的是實踐快速且持續不斷的對最終的用戶交付價值
  2. DevOps 從不是一個人的事情,但需要有人整合團隊技術、帶動部門的協調與溝通,並實做 CI/CD,終而形成特定的文化
  3. CI/CD 是 DevOps 中重要的一環,核心是藉由自動化提升交付價值的速度

明天,我們將介紹 IT 界的第二項大哉問: 什麼是敏捷開發,並且開始準備規劃專案的架構、執行方法、時程以及預期的產出。

參考文章 - What is DevOps

IBM
Microsoft Azure
AWS
Red Hat
Wiki


上一篇
Day1: 前言與三十日的規劃
下一篇
Day3: 淺談敏捷開發
系列文
一個人也能 DevOps ? 用 Angular + Spring Boot 演示專案由開發到部署30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言